* {
    padding: 0px;
    height: 0px;
}

body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background: pink;
}

div {
    height: 60%;
}

div ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

div ul li {
    --c: #fff;
    color: var(--c);
    width: 240px;
    height: 60px;
    border: 2px solid var(--c);
    border-radius: 10px;
    text-align: center;
    line-height: 60px;
    font-weight: bold;
    cursor: pointer;
    margin: 30px;
    position: relative;
    /* 溢出隐藏 */
    overflow: hidden;
    /* 是文字图层在上方 */
    z-index: 1;
    /* 字体颜色变化过渡时间 */
    transition: .5s;
}

div ul li:hover {
    color: #333;
}

div ul li span {
    position: absolute;
    width: 25%;
    height: 100%;
    background-color: var(--c);
    border-radius: 50%;
    /* 在开始时span下移 */
    transform: translateY(150%);
    /* 每个是span左移距离 */
    left: calc((var(--n) - 1) * 25%);
    /* 过渡时间 */
    transition: .5s;
    /* 每个span延迟时间 */
    transition-delay: calc((var(--n) - 1) * 0.1s);
    z-index: -1;
}

div ul li:hover span {
    /* 鼠标触发span上移和放大 */
    transform: translateY(0) scale(2);
}

/* 设置每个span自定义属性 */
div ul li span:nth-child(1) {
    --n: 1;
}

div ul li span:nth-child(2) {
    --n: 2;
}

div ul li span:nth-child(3) {
    --n: 3;
}

div ul li span:nth-child(4) {
    --n: 4;
}
